local t = Def.ActorFrame{
	InitCommand=cmd(fov,100;blend,'BlendMode_Add';);

	Def.Quad {
		Condition=GAMESTATE:IsExtraStage();
		InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomtowidth,SCREEN_WIDTH;zoomtoheight,SCREEN_HEIGHT;);
		OnCommand=cmd(diffuse,color("0.5,0,0,1"););
	};
	
	Def.Quad {
		Condition=GAMESTATE:IsExtraStage2();
		InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomtowidth,SCREEN_WIDTH;zoomtoheight,SCREEN_HEIGHT;);
		OnCommand=cmd(diffuse,color("0,0.6,1,1"););
	};
	
	LoadActor( THEME:GetPathB("_shared","models/_cross") )..{
		InitCommand=function(self)
			self:x(SCREEN_RIGHT-200);
			self:y(SCREEN_CENTER_Y);

			if GAMESTATE:IsExtraStage() or GAMESTATE:IsExtraStage2() then
				self:diffuse(color("0,0,0,0.9"));
			else
				self:diffuse(color("1,1,1,0.9"));
			end;
		end;
		OnCommand=cmd(diffusealpha,0;sleep,0.2;diffusealpha,1;diffusealpha,0.9;zoom,4/2;rotationx,60;rotationz,200;decelerate,1;x,SCREEN_RIGHT-200/2;zoom,1/2;rotationx,-120;rotationy,-200;linear,1.7;rotationx,10;rotationz,-40;accelerate,0.3;addx,-300;addy,-50;zoom,10;diffusealpha,0;);
	};

	LoadActor( THEME:GetPathB("_shared","models/_back01") )..{
		InitCommand=function(self)
			self:x(SCREEN_RIGHT-200);
			self:y(SCREEN_CENTER_Y);

			if GAMESTATE:IsExtraStage() or GAMESTATE:IsExtraStage2() then
				self:diffuse(color("0,0,0,0.2"));
			else
				self:diffuse(color("0.3,0.3,0.3,0.2"));
			end;
		end;
		OnCommand=cmd(draworder,3;diffusealpha,0;sleep,0.2;diffusealpha,1;zoom,15/2;rotationz,-200;decelerate,1;zoom,10;addx,200/2;addy,-200/2;rotationx,100;rotationy,85;rotationz,200;diffuse,color("0.6,0.6,0.6,0.4");rotationz,-40;accelerate,2;zoomy,0;linear,0.001;zoomx,0;diffusealpha,0;);
	};

-- banner title
	Def.ActorFrame{
		-- song background
		Def.Sprite{
			InitCommand=cmd(Center;draworder,-103;);
			OnCommand=function(self)
				if not GAMESTATE:IsCourseMode() then
					local song = GAMESTATE:GetCurrentSong();
					local path;
					if song then
						local Path = song:GetBackgroundPath();
						if not Path then Path = THEME:GetPathG("Common fallback","background"); end;
						self:Load( Path );
					end;
				end;
				self:scaletoclipped(SCREEN_WIDTH,SCREEN_HEIGHT);
				self:diffusealpha(0);
				self:sleep(1);
				self:diffusealpha(0.1);
				self:zoomtowidth(SCREEN_WIDTH+80);
				self:zoomtoheight(SCREEN_HEIGHT+60);
				self:accelerate(1);
				self:diffusealpha(0.8);
				self:zoomtowidth(SCREEN_WIDTH);
				self:zoomtoheight(SCREEN_HEIGHT);
				self:sleep(0.6);
				self:linear(0.15);
				self:diffusealpha(0);
			end;
		};

		-- song background
		Def.Sprite{
			InitCommand=cmd(Center;draworder,-102;);
			OnCommand=function(self)
				if not GAMESTATE:IsCourseMode() then
					local song = GAMESTATE:GetCurrentSong();
					local path;
					if song then
						local Path = song:GetBackgroundPath();
						if not Path then Path = THEME:GetPathG("Common fallback","background"); end;
						self:Load( Path );
					end;
				end;
				self:scaletoclipped(SCREEN_WIDTH,SCREEN_HEIGHT);
				self:zoomtowidth(0);
				self:zoomtoheight(0);
				self:diffusealpha(0);
				self:sleep(2.5);
				self:linear(0.1);
				self:diffusealpha(0.6);
				self:accelerate(0.25);
				self:zoomtowidth(SCREEN_WIDTH*2);
				self:zoomtoheight(SCREEN_HEIGHT*2);
				self:diffusealpha(0);
			end;
		};

		-- song background
		Def.Sprite{
			InitCommand=cmd(Center;draworder,-101;);
			OnCommand=function(self)
				if not GAMESTATE:IsCourseMode() then
					local song = GAMESTATE:GetCurrentSong();
					local path;
					if song then
						local Path = song:GetBackgroundPath();
						if not Path then Path = THEME:GetPathG("Common fallback","background"); end;
						self:Load( Path );
					end;
				end;
				self:scaletoclipped(SCREEN_WIDTH,SCREEN_HEIGHT);
				self:zoomtowidth(SCREEN_WIDTH*8);
				self:zoomtoheight(SCREEN_HEIGHT*8);
				self:diffusealpha(0);
				self:sleep(0.9);
				self:decelerate(0.2);
				self:diffusealpha(0.4);
				self:zoomtowidth(SCREEN_WIDTH+48);
				self:zoomtoheight(SCREEN_HEIGHT+36);
				self:linear(1.5);
				self:zoomtowidth(SCREEN_WIDTH);
				self:zoomtoheight(SCREEN_HEIGHT);
				self:accelerate(0.15);
				self:zoomtowidth(SCREEN_WIDTH-40);
				self:zoomtoheight(10);
				self:accelerate(0.15);
				self:zoomtowidth(0);
			end;
		};
	};
};

return t;
